package com.gitee.huanminabc.utils_tools.spring_base.utils;

import org.springframework.core.DefaultParameterNameDiscoverer;
import org.springframework.core.ParameterNameDiscoverer;

import java.lang.reflect.Method;

public class ParameterNameUtil {
    private static final ParameterNameDiscoverer parameterNameDiscoverer = new DefaultParameterNameDiscoverer();
    /**
     * 获取方法的真实参数名称
     * @param method 目标方法
     * @return 参数名称数组（与参数顺序一致）
     */
    public static String[] getMethodParameterNames(Method method) {
        String[] parameterNames = parameterNameDiscoverer.getParameterNames(method);
        //如果是空报错Maven/Gradle 中是否配置了 -g:none（禁用所有调试信息），这会导致 LocalVariableTable 丢失。
        if (parameterNames == null) {
            throw new IllegalStateException("无法获取方法参数名称。请确保在编译时不关闭调试信息（-g:none）, 或者主动打开 -parameters 选项。");
        }
        return parameterNames;
    }
}
